package com.example.redislearning.service;

import java.util.List;
import java.util.Map;

/**
 * 消息通知服务接口
 * 基于Redis实现系统公告、用户消息、学习提醒等功能
 */
public interface NotificationService {

    /**
     * 发布系统公告
     */
    boolean publishAnnouncement(String title, String content, String publisher);

    /**
     * 获取系统公告列表
     */
    List<Map<String, Object>> getAnnouncements(int page, int size);

    /**
     * 发送用户消息
     */
    boolean sendUserMessage(Integer userId, String title, String content, String type);

    /**
     * 获取用户消息列表
     */
    List<Map<String, Object>> getUserMessages(Integer userId, int page, int size);

    /**
     * 标记消息为已读
     */
    boolean markMessageAsRead(Integer userId, String messageId);

    /**
     * 获取用户未读消息数量
     */
    Integer getUnreadMessageCount(Integer userId);

    /**
     * 发送学习提醒
     */
    boolean sendStudyReminder(Integer userId, Integer courseId, String courseName);

    /**
     * 发送课程更新通知
     */
    boolean sendCourseUpdateNotification(Integer userId, String courseName, String updateContent);

    /**
     * 发送促销通知
     */
    boolean sendPromotionNotification(Integer userId, String promotionTitle, String promotionContent);

    /**
     * 删除用户消息
     */
    boolean deleteUserMessage(Integer userId, String messageId);

    /**
     * 批量标记所有消息为已读
     */
    boolean markAllMessagesAsRead(Integer userId);

    /**
     * 清理过期消息
     */
    boolean cleanExpiredMessages(Integer userId);
}